package com.itheima.a01immutable;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class ImmutableDemo1 {
    public static void main(String[] args) {
        //不可变集合

        //1. 集合类的of方法
        List<String> list = List.of("a", "b", "c");
        Set<String> set = Set.of("a", "b", "c");
        Map<String, Integer> map = Map.of("a", 1, "b", 2, "c", 3);

        System.out.println(list);
        System.out.println(set);
        System.out.println(map);

        //2.其中map里面不能一次性添加超过10个键值对对象，如果有需要添加超过10个
        //可以使用如下方法进行
        //先创建map集合
        HashMap<String, String> hm = new HashMap<>();
        hm.put("a", "b");
        hm.put("c", "d");
        hm.put("b", "b");
        hm.put("d", "d");
        hm.put("e", "b");
        hm.put("f", "d");
        hm.put("g", "b");
        hm.put("h", "d");
        hm.put("i", "b");
        hm.put("j", "d");
        hm.put("k", "b");
        hm.put("l", "d");

//        //再将map集合转为键值对的set单列集合
//        Set<Map.Entry<String, String>> set1 = hm.entrySet();
//
//        //再将set转为entry数组,toArray方法底层有扩容机制，不用在意一开始写的数组大小
//        Map.Entry[] arr = set1.toArray(new Map.Entry[0]);
//
//        //最后再用map里面的方法将数组转为不可变的map集合
//        Map m = Map.ofEntries(arr);
//        //m.put("a","d");
//


        //简便写法（链式编程）
        //Map<Object, Object> m = Map.ofEntries(hm.entrySet().toArray(new Map.Entry[list.size()]));
        //m.put("a","s");



        //一步到位
        Map<String, String> m = Map.copyOf(hm);
        System.out.println(m);

    }
}
